/*
抽象类
    abstract
    包含一个或多个抽象方法的类也必须被声明为抽象类。
        抽象类不能实例化对象，它提供公有方法但不实现，通常由子类实现功能。
    即时不包含抽象方法，也可以声明为抽象类防止被实例化。
    多态
        可以创建一个变量，其类型是一个抽象类，并让它指向具体子类的一个实例，也就是可以使用抽象类来充当形参，
    实际实现类作为实参，也就是多态的应用。
 */
public class Project {
    public static void main(String[] args){
        Driver driver = new Driver();
        driver.setName("张三");
        Teacher teacher = new Teacher();
        teacher.setName("王五");
        driver.work();
        teacher.work();
    }
}

abstract class People{
    String name;
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return name;
    }
    abstract void work();
}

class Driver extends People{
    void work(){
        System.out.println(this.getName()+"是司机，正在开车");
    }
}

class Teacher extends People{
    void work(){
        System.out.println(this.getName()+"是教师，正在教学");
    }
}
